今天邊聽期末發表邊打程式,今天完成的是會員的註冊跟登入,我先打出簡易的架構,那系統流程是登入帳號,如果沒有會員就先去註冊填寫表單傳到資料庫,然後再重新登入,如果登入成功就將會員的資料存進SESSION,待會上圖先PO程式碼。
輸入帳密進行判斷,當然還沒註冊的話請先按< a>標籤的還沒註冊,下面的判斷是讓我知道有沒有註冊成功。$_GET['error']顯示帳密是否有打正確。
<a href="./sign">還沒註冊嗎?</a>
<form action="logcheck.php" method="post">
<input type="text" name="account" value="" placeholder="輸入帳號">
<input type="password" name="password" value="" placeholder="輸入密碼">
<input type="submit" name="" value="登入">
</form>
<?php if ($_GET['sig_suc']!=''): ?>
<?php echo $_GET['sig_suc'] ?>
<?php endif; ?>
<?php if ($_GET['error']!=''): ?>
<?php echo $_GET['error'] ?>
<?php endif; ?>
如果有先註冊的話資料表member會有資料,所以這頁面是取出資料表與輸入帳密相符的資料出來判斷,假設完全正確,就把資料存進SESSION並回傳登入成功,後來會改成直接跳轉到購物網站主頁。輸入錯誤有兩種判斷,第一個是輸入錯誤,第二個是輸入不完全。
<?php
ini_set("display_errors", "On");
require_once "../method/connect.php";
$account = $_POST['account'];
$password = $_POST['password'];
$select = $connect -> prepare("SELECT account,password FORM member WHERE account = :acc AND password = :pw");
$select -> execute(array(':acc' => $account,':pw' => $password));
$result = $select -> fetch(PDO::FETCH_ASSOC) ;
if ($result['account']==$account&&$result['password']==$password) {
session_start();
$_SESSION['member'] = $result;
header("location:./?error=登入成功");
}elseif ($result['password']!=$password||$result['account']!=$account) {
header("location:./?error=帳密錯誤");
}elseif ($result['password']!=''||$result['account']!='') {
header("location:./?error=輸入不完全");
}
?>
註冊一樣是填表單,將資料傳進資料表member。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>註冊頁面</title>
</head>
<body>
<form class="" action="add.php" method="post">
<input type="mail" name="mail" value="" placeholder="輸入註冊信箱">
<input type="text" name="password" value=""panel placeholder="輸入密碼">
<input type="password" name="pwcheck" value=""panel placeholder="再次輸入密碼">
<input type="text" name="name" value="" placeholder="輸入姓名">
<input type="number" name="phone" value="" placeholder="輸入電話">
<input type="text" name="addr" value="" placeholder="輸入地址">
<input type="submit" name="" value="註冊">
</form>
</body>
</html>
將資料寫進資料表,我是用PDO,有興趣可以玩玩看,很有趣。
<?php
ini_set("display_errors","On");
$account = $_POST['mail'];
$password = $_POST['password'];
$member = $_POST['name'];
$phone = $_POST['phone'];
$addr = $_POST['addr'];
require_once "../../method/connect.php";
$insert = $connect -> prepare("INSERT INTO member(account,password,member,phone,addr)
VALUES(?,?,?,?,?)");
$insert -> execute(array($account,$password,$member,$phone,$addr));
header("location:../?sig_suc=註冊成功");
?>
這個頁面是購物網站的主頁面,以後會呈現商品列表,跟其他入口的連結。這次我在測試SESSION功能,以前有學過但還不是很有概念,我想我今明天會再發一篇SESSION相關的文章,畢竟跟會員系統有很大的關係。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>主頁</title>
</head>
<body>
<a href="./login/">登入</a>
<?php
session_start();
var_dump($_SESSION['member'])
?>
</body>
</html>
我先打出東西晚上再renew,我現在算是在建構系統架構,晚一點再去蒐集資料強化觀念,先這樣了